
set matsize 1500
clear

use "wave13-16_FULL.dta"
keep if swave==13

*****Merge with license
merge m:1 lgtkey using "Module.dta", generate(_licensemerge)


merge m:1 lgtkey using "Wave2_topical", generate(edumerge) keepusing(ecourse1 ecourse2 ecourse3)
drop if edumerge==2
gen math=0
replace math=1 if ecourse1==1
gen sci=0
replace sci=1 if ecourse2==1
gen eng=0
replace eng=1 if ecourse3==1
********************************Data Management***********************
drop if tage<18 
drop if tage >64 

* Work hour<1
drop if ejbhrs1<1


*delege useless license data
drop if  iprocert <1

*Delete imptued license 
drop if iwhopcer <0 

* Define demographic
generate female =1
replace female =0 if esex==1
drop if female==1

generate black=0
replace black=1 if erace==2

generate hispanic=0
replace hispanic=1 if eorigin==1 & black==0

*Create hourly wage
generate long wage = (tpmsum1)/4/ejbhrs1
drop if wage>100
drop if wage<5
gen lwage =log(wage)
generate union=1
replace union=0 if eunion1==2

*Delete imputed union data
drop if eunion1 <0 

*Drop race other than white and black
gen other=0
replace other=1 if erace>2

***Merging with Module data of license (skip)
***Create license dummy (skip)

*Delete imputed licensure source
drop if iwhopcer <0 


*Create gov't summy
generate govt=0
replace govt=1 if inrange(eclwrk1, 3,5)

*service worker?
gen service=0
replace service=1 if inrange(ejbind1,6870,9290)

*Create education dummy
generate hs =0
replace hs=1 if eeducate==39
generate somecollege =0
replace somecollege=1 if inrange(eeducate,40,43)
generate college=0
replace college=1 if eeducate ==44
generate postgrad=0
replace postgrad=1 if eeducate >44

*Create self-employment and big company dummy
generate self_emp=1
replace self_emp=0 if ebuscntr<0

gen age2=tage*tage
rename tage age


*Ensure that the license variable does not contain certified
replace license=0 if cert==1

*Ensure the license indicator include only license being required by job
gen licensenorequire=0
replace licensenorequire=1 if irjpcert!=1 & license==1
replace license=0 if irjpcert>1

		*Merge with ban data
	gen state_occ=string(tfipsst)+"-"+string(tjbocc1) if license==1

	merge m:1 state_occ using "mandatory_unique.dta", generate(_felonymerge)

	drop if _felonymerge==2
	replace permban=0 if _felonymerge==1
	replace felony=0 if _felonymerge==1

	rename permban Ban

	***"permban" only contains permanent ban
	***"felony" contains both temporary and permanent ban

	foreach y in license Ban{
		gen `y'_black=`y'*black
		label var `y'_black "`y'*black"
	}

	keep if apmsum1==0 & inrange(wage,5,100)


	gen person=0
	replace person=1 if iwhypcer==2

	***************** Race selection
	drop if other==1
	drop if hispanic==1 & black==0

	***********************************
	**** Main Table
	***********************************
	replace quality=100 if missing(quality)

	local controls  age age2  hs somecollege college postgrad union govt self_em service 

	
	 regress lwage black  license cert licensenorequire  `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license) label replace 
	regress lwage black  license license_black cert licensenorequire  `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_black) label
	
	gen boxyes=0
	replace boxyes=1 if inlist(tfipsst,6,8,9,11,15,25,27,35)

	gen BTBban=Ban*boxyes
	replace Ban=0 if BTBban==1
	gen nonBTBban=Ban

	
	gen con_edu=0
replace con_edu=1 if icdpcert==1

	foreach y in BTBban nonBTBban con_edu person eng math sci{
		gen `y'_black=`y'*black
		label var `y'_black "`y'*black"
	}


	 regress lwage black  license license_*  BTBban* nonBTBban* cert licensenorequire  `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_* BTBban* nonBTBban*) label
	 regress lwage black  license license_*  BTBban* nonBTBban* cert licensenorequire person* `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_* BTBban* nonBTBban*) label addtext("license reason",X)

	 regress lwage black  license license_*  BTBban* nonBTBban* cert licensenorequire person* con_edu* `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_* BTBban* nonBTBban*) label addtext("license reason",X,"continuous edu",X)	
	 regress lwage black  license license_*  BTBban* nonBTBban* cert licensenorequire person* con_edu* eng* math* sci* `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_* BTBban* nonBTBban*) label addtext("license reason",X,"continuous edu",X,"advanced class",X)

	
***** Get residual

foreach p in math sci eng{
quietly reg `p' `controls' i.tfipsst i.tjbocc1 `yearcontrol' if apmsum1==0 & inrange(wage,5,100), vce(cluster tfipsst)
predict resid_`p', resid
gen resid2_`p'=(resid_`p')^2
gen resid3_`p'=(resid_`p')^3
gen resid4_`p'=(resid_`p')^4
gen resid5_`p'=(resid_`p')^5
}

	regress lwage black  license license_*  BTBban* nonBTBban* cert licensenorequire person* con_edu* resid* `controls' i.tfipsst i.tjbocc1 i.rhcalmn if apmsum1==0 & inrange(wage,5,100) [pweight=wpfinwgt], vce(cluster tfipsst)
	outreg2 using Table7.tex, keep(black license license_* BTBban* nonBTBban*) label addtext("license reason",X,"continuous edu",X,"advanced class(higher-order residual)",X)
